use std::env;

fn main() {
	ffmpeg::init().unwrap();

	match ffmpeg::format::input(&env::args().nth(1).expect("missing input file name")) {
		Ok(ictx) => {
			println!("Nb chapters: {}", ictx.nb_chapters());

			for chapter in ictx.chapters() {
				println!("chapter id {}:", chapter.id());
				println!("\ttime_base: {:?}", chapter.time_base());
				println!("\tstart: {}", chapter.start());
				println!("\tend: {}", chapter.end());

				for (k, v) in chapter.metadata().iter() {
					println!("\t{}: {}", k, v);
				}
			}

			let mut octx = ffmpeg::format::output(&"test.mkv".to_owned()).expect("Couldn't open test file");

			for chapter in ictx.chapters() {
				let title = match chapter.metadata().get("title") {
					Some(title) => String::from(title),
					None => String::new(),
				};

				match octx.add_chapter(
					chapter.id(),
					chapter.time_base().expect("Input chapter is missing a time base"),
					chapter.start(),
					chapter.end(),
					&title,
				) {
					Ok(chapter) => println!("Added chapter with id {} to output", chapter.id()),
					Err(error) => {
						println!("Error adding chapter with id: {} - {}", chapter.id(), error)
					}
				}
			}

			println!("\nOuput: nb chapters: {}", octx.nb_chapters());
			for chapter in octx.chapters() {
				println!("chapter id {}:", chapter.id());
				println!("\ttime_base: {:?}", chapter.time_base());
				println!("\tstart: {}", chapter.start());
				println!("\tend: {}", chapter.end());
				for (k, v) in chapter.metadata().iter() {
					println!("\t{}: {}", k, v);
				}
			}
		}

		Err(error) => println!("error: {}", error),
	}
}
